# Copyright (c) 2025 Anfer / Ancante
"""
资源路径管理模块
==============

该模块提供统一的资源路径获取功能，支持开发环境和PyInstaller打包后的运行环境。
确保程序能够正确找到所需的资源文件（如图标、配置文件等）。

打包命令:
==========
1. 使用PyInstaller直接打包（推荐）:
   pyinstaller --noconfirm --onefile --windowed --icon="logo.ico" --name="ImageConverter" --add-data="logo.ico;." main.py

2. 使用现有的spec文件打包:
   pyinstaller main.spec

3. 更详细的打包命令:
   pyinstaller --noconfirm --onefile --windowed --icon="logo.ico" --name="ImageConverter" --add-data="logo.ico;." main.py

参数说明:
========
--noconfirm: 覆盖现有文件时不询问确认
--onefile: 打包成单个可执行文件
--windowed: 不显示控制台窗口
--icon="logo.ico": 设置可执行文件的图标
--name="ImageConverter": 设置生成的可执行文件名称
--add-data="logo.ico;.": 将logo.ico文件包含到打包文件中
"""

import sys
import os

def resource_path(relative_path):
    """
    获取资源文件的绝对路径
    
    自动识别运行环境（开发环境或PyInstaller打包环境），返回正确的资源路径。
    解决PyInstaller打包后资源文件找不到的问题。
    
    Args:
        relative_path (str): 资源文件相对于项目根目录的相对路径
        
    Returns:
        str: 资源文件的绝对路径
        
    Example:
        icon_path = resource_path('assets/logo.ico')
    """
    # 判断是否为PyInstaller打包环境
    if hasattr(sys, '_MEIPASS'):
        # PyInstaller打包后的临时目录
        base_path = sys._MEIPASS
    else:
        # 开发环境下的当前目录
        base_path = os.path.abspath(".")
    
    # 拼接完整路径并返回
    return os.path.join(base_path, relative_path)